package cn.iocoder.yudao.module.crossborder.finance.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 财务结算 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 财务结算 DTO")
@Data
public class SettlementDTO {

    @Schema(description = "结算编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long orderId;

    @Schema(description = "结算类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer settlementType;

    @Schema(description = "结算状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    private Integer status;

    @Schema(description = "原始金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000.00")
    private BigDecimal originalAmount;

    @Schema(description = "原始货币", requiredMode = Schema.RequiredMode.REQUIRED, example = "USD")
    private String originalCurrency;

    @Schema(description = "结算金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "6800.00")
    private BigDecimal settlementAmount;

    @Schema(description = "结算货币", requiredMode = Schema.RequiredMode.REQUIRED, example = "CNY")
    private String settlementCurrency;

    @Schema(description = "汇率", example = "6.8")
    private BigDecimal exchangeRate;

    @Schema(description = "手续费", example = "10.00")
    private BigDecimal fee;

    @Schema(description = "税费", example = "68.00")
    private BigDecimal tax;

    @Schema(description = "实际到账金额", example = "6722.00")
    private BigDecimal actualAmount;

    @Schema(description = "结算周期", example = "7")
    private Integer settlementCycle;

    @Schema(description = "结算账户", example = "6222021234567890")
    private String settlementAccount;

    @Schema(description = "结算银行", example = "中国银行")
    private String settlementBank;

    @Schema(description = "结算时间")
    private LocalDateTime settlementTime;

    @Schema(description = "完成时间")
    private LocalDateTime completedTime;

    @Schema(description = "备注", example = "正常结算")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
